import { createApp } from "vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import App from "./App.vue";
import router from "@/router";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
import "@/styles/global.css";

// 创建Vue应用实例
const app = createApp(App);

// 注册所有Element Plus图标组件
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component);
}

// 配置全局属性和方法
app.config.globalProperties.$filters = {
    /**
     * 状态映射过滤器
     * @param {number} status 状态码
     * @returns {string} 状态文本
     */
    statusMap(status) {
        const statusMap = {
            0: "正常",
            1: "禁用",
            2: "待审核",
        };
        return statusMap[status] || "未知";
    },

    /**
     * URL前缀处理
     * @param {string} url 原始URL
     * @returns {string} 处理后的完整URL
     */
    prefix(url) {
        if (url && url.startsWith("http")) {
            return url;
        } else {
            // 开发环境下的API前缀，实际项目中应该配置为真实的API地址
            url = `http://localhost:3000/api${url}`;
            return url;
        }
    },
};

/**
 * 全局回到顶部方法
 * 用于页面滚动到顶部
 */
app.config.globalProperties.goTop = function () {
    const main = document.querySelector(".main");
    if (main) {
        main.scrollTop = 0;
    }
};

// 注册路由
app.use(router);

// 注册Element Plus组件
// 按需引入，减少打包体积，提高性能
app.use(ElementPlus);

// 挂载应用到DOM
app.mount("#app");
